import {
	Platform,
	CarSetting,
	Storage_Key
} from "@/static/config.js"
import {
	get,
	set
} from '@/common/storage'
import request from '@/common/request.js';
var indexHandler = {
	/**
	 * 检查用户信息，验证平台userid和微信openid是否绑定，否则需重新登录
	 * @return  
	 * @eg: 
	 */
	checkUserInfo() {
		let _self = this;
		// 用户已登录平台账号
		let webUserInfo = get(Storage_Key.web_user_info, true);
		let wxUserInfo = get(Storage_Key.user_info, true);

		if (webUserInfo) {
			let _self = this;
			let formData = { // 平台账号密码
				userId: webUserInfo.user.userId,
				openId: wxUserInfo.openId,
			};
			request({
				url: Platform.api_requestUrl + '/osp_basemain_wechatuserinfo/Query',
				data: formData,
				header: {
					'Content-Type': 'application/x-www-form-urlencoded', //自定义请求头信息
				},
				method: 'GET',
			}).then(response => {
				console.log(response)
				if (response.data) {
					let Wechatuserinfo = response.data;
					// 没有平台userid和微信openid绑定信息
					if (Wechatuserinfo.length <= 0) {
						uni.$emit("exitUser", {
							key: true,
						})
					}
				} else {
					// 没有平台userid和微信openid绑定信息
					uni.$emit("exitUser", {
						key: true,
					})
				}
			}).catch(error => {
			});

		}
	},
	/**
	 * -- 此验证方式暂时不用
	 * 检查用户信息，用户信息和本地存储信息不一致时，需重新登录
	 * @return  
	 * @eg: 
	 */
	checkUserInfo0() {
		let _self = this;
		// 用户已登录平台账号
		let webUserInfo = get(Storage_Key.web_user_info, true);
		if (webUserInfo) {

			let _self = this;
			let formData = { // 平台账号密码
				username: webUserInfo.user.userName,
				password: webUserInfo.user.userPwd,
			};
			// uni.request({
			// 	url: Platform.api_requestUrl + '/dologin',
			// 	data: formData,
			// 	header: {
			// 		'Content-Type': 'application/x-www-form-urlencoded', //自定义请求头信息
			// 	},
			// 	method: 'POST',
			// 	success: (response) => {
			// 		console.log(response)
			// 		if (!!response.data.data) {
			// 			// 用户信息比较
			// 			let newWebUserInfo = response.data.data;
			// 			// 用户id、用户名、密码一致，保存最新的用户信息
			// 			if (_self.compareUserInfo(webUserInfo, newWebUserInfo)) {
			// 				_self.$storage.set(Storage_Key.web_user_info, newWebUserInfo, true);
			// 			} else {
			// 				// 用户id、用户名、密码不一致，清空本地用户信息，需重新登录
			// 				uni.$emit("exitUser", {
			// 					key: true,
			// 				})
			// 			}
			// 		} else {
			// 			// 没有用户信息，清空本地用户信息，需重新登录
			// 			uni.$emit("exitUser", {
			// 				key: true,
			// 			})
			// 		}
			// 	},
			// 	complete: () => {},
			// 	fail: (error) => {},
			// });

		}
	},
	// 用户信息一致性比较
	compareUserInfo(oldVal, newVal) {
		return (oldVal.user.userId == newVal.user.userId) && (oldVal.user.userName == newVal.user.userName) && (
			oldVal.user.userPwd == newVal.user.userPwd)
	},
	// 退出当前用户
	doExit() {
		// 清除本地存储平台用户信息
		set(Storage_Key.web_user_info, '', true);
		// 刷新角色权限模块
		this.refreshAuthModule();
	},
	// 刷新角色权限模块
	refreshAuthModule() {
		// 刷新首页权限菜单
		uni.$emit("RefreshIndexTabs", {
			key: true,
			// msg: webUserInfo
		})
	},
	/**
	 * 扫描二维码
	 * @return  二维码数据
	 * @eg: 
	 */
	async scanCode() {
		let result = {
			tag: true,
			msg: ''
		}
		return new Promise((resolve, reject) => {
			uni.scanCode({
				onlyFromCamera: true, // 只允许通过相机扫码
				scanType: ['qrCode'], // 调起二维码扫描
				success: function(res) {
					console.log(res);
					if (res.errMsg == "scanCode:ok") {
						result.tag = true;
						result.msg = res.result;
						resolve(result);
					} else {
						result.tag = false;
						result.msg = '无法识别的二维码';
						resolve(result);
					}
				},
				fail(e) {
					result.tag = false;
					result.msg = '无法识别的二维码';
					resolve(result);
				}
			})

		});;
	},
	/**
	 *入园登记二维码数据分析处理
	 * @param 
	 * @return  
	 * @eg: 
	 * ZY 二维码数据 - 车辆预约ID
	 * 		格式：[平台标记，预约ID，预约车牌号，预约车辆类型]
	 */
	async recordIn(val) {
		// // 测试用
		// uni.navigateTo({
		// 	url: '/pages/record/record-add?item=b3a32ad0-8f4f-4e84-b077-f2c58f13cacc'
		// })
		if ((!!val) && val.length > 0) {
			let webUserInfo = get(Storage_Key.web_user_info, true);
			let wxUserInfo = get(Storage_Key.user_info, true);

			// >>> 解析二维码数据[平台标记，预约ID，预约车牌号，预约车辆类型] -> 判断类型
			let qrCodeData = val.split(',');
			// >>> 判断平台标记
			if (qrCodeData[0] == Platform.tag) { // -- ZY平台的二维码 - 车辆预约ID
				// 判断如果是职工进入园区
				if (val.indexOf('qygeneral') > -1) {
					if (!!qrCodeData[1]) {
						uni.showModal({
							content: '还在入园状态,请先扫码出园！',
							showCancel: false
						})
						return;
					}
					let form = {
						intime: Date.now(),
						status: CarSetting.recordinout.in,
						creatorid: webUserInfo.user ? webUserInfo.user.userId : "",
						creator: webUserInfo.user ? webUserInfo.user.userName : "",
						bookingperson: qrCodeData[3],
						destination: qrCodeData[6],
						carcode: qrCodeData[2],
						cartype: '3', // 企业职员
					}
					this.saveOrUpEntstaff(form)
					return;
				}

				// >>> 查询预约信息
				let bookingCarDetail = await this.getBookingById(qrCodeData[1]);
				// >>> 分类处理
				if (CarSetting.controlTpyes.includes(qrCodeData[3]) || val.indexOf('youke') > -
					1) { // - 控制车辆：危化品车辆(和游客) --> 需要绑定定位卡
					uni.navigateTo({
						url: `/pages/record/record-inout?item=${encodeURIComponent(JSON.stringify(bookingCarDetail))}`
					});
				} else { // - 控制车辆：社会车辆 -- 不需要绑定定位卡
					let formData = {
						bookingid: qrCodeData[1], // 预约ID
						carcode: qrCodeData[2], // 车牌号 - api不需要
						// cardcode: this.cardDetail.cardcode,
						status: CarSetting.recordinout.in,
						creatorid: webUserInfo.user ? webUserInfo.user.userId : "",
						creator: webUserInfo.user ? webUserInfo.user.userName : ""
					}
					this.saveOrUpdate(formData)

				}
			} else { // -- 定位卡设备二维码
				uni.$emit("carIn", {
					key: false,
					msg: '请先扫车辆预约信息二维码'
				})
			}
		} else {
			// 信息错误
			uni.showModal({
				content: '信息错误',
				showCancel: false
			})
		}
	},
	/**
	 * 企业职员进出园区
	 *
	 */
	saveOrUpEntstaff(formData) {
		uni.showLoading({
			title: '登记...',
			mask: false
		});
		let _self = this;
		request({
			url: Platform.api_requestUrl + '/stp-checkin/SaveOrUpdate',
			data: formData,
			method: 'POST',
		}).then(response => {
			uni.hideLoading();
			if (response.code == 200) {
				uni.$emit("carIn", {
					key: true,
					msg: formData.carcode + response.message
				})
				uni.navigateBack();
			} else {
				uni.$emit("carIn", {
					key: false,
					msg: formData.carcode + response.message
				})
			}
		}).catch(error => {
			uni.hideLoading();
			uni.showModal({
				content: '登记失败',
				showCancel: false
			})
		});
	},
	/**
	 * 进园登记信息
	 * @param formData 提交数据
	 * @return  
	 * @eg: 
			危化品车辆：扫本次预约码 -> 扫定位卡码 -> 进入
			社会车辆：扫本次预约码 -> 进入
	 */
	saveOrUpdate(formData) {
		uni.showLoading({
			title: '登记...',
			mask: false
		});
		let _self = this;
		request({
			url: Platform.api_requestUrl + '/stp-checkin/InOrOut',
			data: formData,
			method: 'POST',
		}).then(response => {
			uni.hideLoading();
			if (response.code == 200) {
				uni.$emit("carIn", {
					key: true,
					msg: formData.carcode + response.message
				})
				uni.navigateBack();
			} else {
				uni.$emit("carIn", {
					key: false,
					msg: formData.carcode + response.message
				})
			}
		}).catch(error => {
			uni.hideLoading();
			uni.showModal({
				content: '登记失败',
				showCancel: false
			})
		});
	},
	/**
	 * 出园登记二维码数据分析处理
	 * @param 
	 * @return  
	 * @eg: 
	 * ZY 二维码数据 - 车辆出入登记ID
	 * 		格式：[平台标记，进出记录ID，车牌号，车辆类型]
	 */
	async recordOut(val) {
		if ((!!val) && val.length > 0) {
			// >>> 解析二维码数据（ZY平台的二维码/ 定位卡设备二维码） -> 判断类型
			let qrCodeData = val.split(',');
			let inoutId = '';
			let carcode = '';
			// >>> 判断平台标记
			if (qrCodeData[0] == Platform.tag) {
				// -- ZY平台的二维码[平台标记，进出记录ID，车牌号，车辆类型]
				// 备注：此处无需判断车辆类型，直接用进出记录ID修改记录状态
				inoutId = qrCodeData[1];
				carcode = qrCodeData[2];
			} else {
				// -- 定位卡设备二维码[定位卡ID] -> 获取进出记录 by定位卡编号
				let checkin = await this.getCheckin(qrCodeData[0])
				inoutId = checkin.id;
				carcode = checkin.carcode;
			}
			// 保存
			let webUserInfo = get(Storage_Key.web_user_info, true);
			let formData = {
				id: inoutId, // 进出记录ID
				carcode: carcode, // 车牌号 - api不需要
				status: CarSetting.recordinout.out,
				creatorid: webUserInfo.user ? webUserInfo.user.userId : "",
				creator: webUserInfo.user ? webUserInfo.user.userName : ""
			}
			this.saveOrUpdate(formData)
		} else {
			// 信息错误
			uni.showModal({
				content: '信息错误',
				showCancel: false
			})
		}
	},
	// 获取车辆预约信息 by 车牌号
	getBookingById(val) {
		uni.showLoading({
			title: '获取预约信息...',
			mask: false
		});
		let _self = this;
		let formData = {
			id: val
		}
		return new Promise((resolve, reject) => {
			request({
				url: Platform.api_requestUrl + '/stp-booking/GetById',
				data: formData,
				// header: {
				// 	// 'Content-Type': 'application/x-www-form-urlencoded', //自定义请求头信息
				// },
				method: 'GET',
			}).then(response => {
				uni.hideLoading();
				// _self.bookingCarDetail = response.data;
				if (!response.data) {
					uni.$emit("newsNotice", {
						key: false,
						msg: "获取预约信息失败"
					})
					// uni.navigateBack();
				} else {
					resolve(response.data);
				}
			}).catch(error => {
				uni.$emit("newsNotice", {
					key: false,
					msg: "获取预约信息失败"
				})
			});
		})

	},
	// 获取进出记录 by定位卡编号
	getCheckin(cardCode) {
		uni.showLoading({
			title: '获取进出记录...',
			mask: false
		});
		let _self = this;
		return new Promise((resolve, reject) => {
			request({
				url: Platform.api_requestUrl + '/stp-checkin/getCheckin',
				data: {
					cardCode: cardCode
				},
				method: 'GET',
			}).then(response => {
				uni.hideLoading();
				if (response.code == 200) {
					resolve(response.data);
				} else {
					uni.showModal({
						content: response.message,
						showCancel: false
					})
				}
			}).catch(error => {
				uni.hideLoading();
				uni.showModal({
					content: '获取数据失败',
					showCancel: false
				})
			});
		})
	},
	// 验证定位卡在网情况
	getTermainalonline(cardCode) {
		uni.showLoading({
			title: '验证定位卡...',
			mask: false
		});
		let _self = this;
		return new Promise((resolve, reject) => {
			uni.request({
				url: Platform.api_stp_jt808_requestUrl + '/jt808/termainalonline',
				data: {
					code: cardCode
				},
				header: {},
				method: 'GET',
				success: (response) => {
					uni.hideLoading();
					console.log(response)
					if (response.data.code == 200) {
						resolve(response.data.data);
					} else {
						uni.showModal({
							content: response.data.message,
							showCancel: false
						})
					}
				},
				complete: () => {
					console.log("complete")
				},
				fail: (error) => {
					uni.hideLoading();
					uni.showModal({
						content: '获取数据失败',
						showCancel: false
					})
				},
			});
		})
	},
	//批量验证在网状态
	sometermainalonline(cardCodes) {
		uni.showLoading({
			title: '验证定位卡...',
			mask: false
		});
		let _self = this;
		return new Promise((resolve, reject) => {
			uni.request({
				url: Platform.api_stp_jt808_requestUrl + '/jt808/sometermainalonline',
				data: {
					codes: cardCodes
				},
				header: {
					'Accept': 'application/json',
					// 'Content-Type': 'application/json',
					'Content-Type': 'application/x-www-form-urlencoded', //自定义请求头
				},
				method: 'POST',
				success: (response) => {
					uni.hideLoading();
					console.log(response)
					if (response.data.code == 200) {
						resolve(response.data.data);
					} else {
						uni.showModal({
							content: response.data.message,
							showCancel: false
						})
					}
				},
				complete: () => {
					console.log("complete")
				},
				fail: (error) => {
					uni.hideLoading();
					uni.showModal({
						content: '获取数据失败',
						showCancel: false
					})
				},
			});
		})
	},
}
export default indexHandler